String.prototype.capitalize = function() {
    return this.replace(/\S+/g, function(a){
        return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase();
    });
};

String.prototype.reducirCadena = function(tamano) {
    if (this.length > tamano){
        return this.substring(0,20) + '...';
    }else{
        return this;
    }
};
// prototipos anti-bobo, por si se utiliza "capitalize" con variables
// tipo Number o Boolean. No previene el mal uso de null o de undefined.
Number.prototype.capitalize = function() {
    return ''
};
Boolean.prototype.capitalize = function() {
    return ''
};
String.prototype.formatoFecha = function() { //v1.0
    var fecha = this.replace('/', '-');
    fecha = fecha.replace('/', '-');
    return fecha;
};

String.prototype.isEmpty = function() {
    if ((this == null) || (this == '')|| (this == undefined)) {
        return true;
    } else {
        return false;
    }
}
// Empty: devuelve verdadero si value es vacio
function Empty(value) {
    var pattern = new RegExp("^[ ]*$");
    if (value.match) {
        return value.match(pattern) || value.length == 0;
    } else {
        return false;
    }
}
function isPeso(value) {
    var pattern = new RegExp("^([0-9]*\.[0-9]+|[0-9]+)$");
    return value.match(pattern);
}
function isTelefono(value) {
    var pattern = new RegExp("^[0-9]+$");
    return value.match(pattern);
}
// isInteger: devuelve verdero si value es un entero
function isInteger(value) {
    var pattern = new RegExp("^[0-9]+$");
    return value.match(pattern);
}

// isMoney: devuelve verdadero si un valor es tipo moneda
function isMoney(value, isEnglish) {
    if (isEnglish) {
        var pattern = new RegExp("^[0-9]+(\\.[0-9]+){0,1}$");
        return value.match(pattern);
    } else {
        var pattern = new RegExp("^[0-9]+(,[0-9]+){0,1}$");
        return value.match(pattern);
    }
}
// isMail: devuelve verdadero si value es una direccion de correo valida
function isMail(value) {
    var pattern = new RegExp("^([a-zA-Z0-9_\\-]+\\.{0,1})+@([a-zA-Z0-9_\\-]+\\.)+[a-zA-Z0-9_\\-]+$");
    return value.match(pattern);
}
// isWeb: devuelve verdadero si value es una direccion de web v�lida
function isWeb(value) {
    var pattern = new RegExp("http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?");
    return value.match(pattern);
}
//isTlfMovil: devuelve verdadero si value es un numero movil en formato 0000-0000000
function isTlfMovil(value) {
    var pattern2 = new RegExp("^[0-9]{4}[-][0-9]{7}$");
    if (value.match(pattern2)) {
        return true;
    }else{
        return false;
    }
}

// isDate: devuelve verdadero si value es una fecha valida en formato dd/mm/aaaa
function isDate(value) {
    var pattern2 = new RegExp("^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[](19|20)[0-9]{2}$");
    if (value.match(pattern2)) {
        /*if (parseInt(value.substr(6, 4)) % 4 != 0 && parseInt(value.substr(3, 2)) == 2 && parseInt(value.substr(0, 2)) == 29) {
         return false;
         } else {
         return true;
         }*/
        //Rafael Ferrero 03/12/2009 Registro de siniestros automovil web.
        var dia  =  parseInt(value.substring(0,2),10);
        var mes  =  parseInt(value.substring(3,5),10);
        var anio =  parseInt(value.substring(6),10);
        switch(mes){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                numDias=31;
                break;
            case 4: case 6: case 9: case 11:
            numDias=30;
            break;
            case 2:
                if ( ( anio % 100 != 0) && ((anio % 4 == 0) || (anio % 400 == 0))) {
                    numDias=29
                }
                else {
                    numDias=28
                }
                break;
            default:
                return false;
        }
        if (dia>numDias || dia==0){
            return false;
        }

        return true;
    } else {
        return false;
    }
}
// isAlpha: devuelve verdadero si la cadena contiene solo caracteres alfabeticos
// o espacios
function isAlpha(value) {
    var pattern = new RegExp("^[a-zA-Z\\s]+$");
    return value.match(pattern);
}
// isAlphaNum: devuelve true si el valor contiene s�lo caracteres alfabeticos (may�sculas o min�sculas)
// o n�meros, incluye espacios en blanco
function isAlphaNum(value) {
    var pattern = new RegExp("^[A-z0-9\s]+$");
    return value.match(pattern);
}

//isDirIP: devuelve verdadero si value es una direccion ip en formato xxx.xxx.xxx.xxx
function isDirIP(value) {
    var pattern2 = new RegExp("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
    if (value.match(pattern2)) {
        return true;
    }else{
        return false;
    }
}

// LTrim: Quita espacios en blanco a la izquerda de una cadena
function LTrim(value) {
    var pattern = new RegExp("^\\s+", "g")
    return value.replace(pattern, "");
}
// RTrim: Quita espacios en blanco a la derecha de una cadena
function RTrim(value) {
    var pattern = new RegExp("\\s+$", "g")
    return value.replace(pattern, "");
}
// Trim: Quita espacios en blanco a la derecha y a la izquierda de una cadena
function Trim(value) {
    return RTrim(LTrim(value));
}


function sendServiceJSON(uriRestService,JsonData,funcionOnSuccess,funcionOnRequest,funcionOnFailure){

    $.ajax({
        url: uriRestService,
        cache:false,
        method: "POST",
        data:(JsonData == undefined)?null:JsonData,
        dataType:"json",
        success: funcionOnSuccess
    });


};




// cargar link de la aplicaci�n   cuando este logeado



// cargar link de la aplicaci�n   cuando NO este logeado
function carcarLinkNoLogeado(){
    //TODO CLICK A LINK IMAGENES

    $("#linkQuinielaImg").click(function(){
        //        cargarEspacioTrabajo("NoLogeado");
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');
    });

    $("#crearUsuarioImg").click(function(){
        redireccionar(crearUsuario);
    });

    $("#linkRecargaImg").click(function(){
        //        cargarEspacioTrabajo("NoLogeado");
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

    });

    $("#linkApuestaImg").click(function(){
        //        cargarEspacioTrabajo("NoLogeado");
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

    });
    //TODO CLICK A LINK MENU

    $("#linkReglasJuego").click(function(){
        cargarEspacioTrabajo("ReglaJuego1");
    });

    $("#linkHome").click(function(){
        cargarEspacioTrabajo("resumenEventos");
        $("#div_detalleTop").hide();
        $("#detalleEventosTop").show(2000);
    });


    $('#linkCuenta').click(function(){
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

    });



    $("#linkContactanos").click(function(){
        cargarEspacioTrabajo("contactanos");

    });

    $("#linkOlvidoContrasena").click(function(){
        redireccionar(olvidoContra);
    });

    $('#linkPerfil').click(function(){
        //        cargarEspacioTrabajo("NoLogeado");
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

    });

    $('#linkOut').click(function(){
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');
    });


    $("#linkOperaciones").click(function(){
        //        cargarEspacioTrabajo("NoLogeado");
        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

    });

    //TODO LINK DEL FOOTER

    //            $("#footerTerminoCondiciones").click(function(){
    //                cargarEspacioTrabajo("terminoCondiciones");
    //
    //            });

    $("#footerFaq").click(function(){
        cargarEspacioTrabajo("faq");

    });

    $("#footerPoliticas").click(function(){
        cargarEspacioTrabajo("politicas");

    });

    $("#footerContactanos").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("contactanos");

    });

    $("#footerMapaSitio").click(function(){
//        cargarEspacioTrabajo("mapaSitio");
        notify("EN CONTRUCCION!!!",500,5000,"error")  ;

    });



    //TODO click a siguiente y anterior de reglas de juego


    $("#anteriorReglas1").click(function(){
        cargarEspacioTrabajo("ReglaJuego1");

    });

    $("#siguenteReglas2").click(function(){
        cargarEspacioTrabajo("ReglaJuego2");

    });

    //            $('#NoLogeado').dialog('open');
    //

}


function carcarLinkLogeado(){

    //TODO CLICK A LINK IMAGENES

    $("#linkOut").unbind("click");
    $("#linkOut").click(function(){
        redireccionar(logOut);
    });

    $("#linkQuinielaImg").unbind("click");
    $("#linkQuinielaImg").click(function(){
        redireccionar(quiniela);
    });

    $("#crearUsuarioImg").unbind("click");
    if($("#crearUsuarioImg").hasClass("pointer"))
        $("#crearUsuarioImg").removeClass("pointer");


    $("#linkRecargaImg").unbind("click");
    $("#linkRecargaImg").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("recargaPuntos");

    });

    $("#linkApuestaImg").unbind("click");
    $("#linkApuestaImg").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("apuestas");

    });
    //TODO CLICK A LINK MENU

    $("#linkReglasJuego").unbind("click");
    $("#linkReglasJuego").click(function(){
        cargarEspacioTrabajo("ReglaJuego1");

    });

    $("#linkCuenta").unbind("click");
    $("#linkCuenta").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("cuentasAfiliado");
        cargarCuentaJSONData();
    });

    $("#linkHome").unbind("click");
    $("#linkHome").click(function(){
        cargarEspacioTrabajo("resumenEventos");
        $("#div_detalleTop").hide();
        $("#detalleEventosTop").show(2000);
    });

    $("#linkContactanos").unbind("click");
    $("#linkContactanos").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("contactanos");

    });


    $("#linkOlvidoContrasena").unbind("click");
    if($("#linkOlvidoContrasena").hasClass("pointer"))
        $("#linkOlvidoContrasena").removeClass("pointer");

    $("#linkPerfil").unbind("click");
    $('#linkPerfil').click(function(){
        cargarEspacioTrabajo("consultarUsuario");
        cargarDataUsuario();

    });

    $("#linkOperaciones").unbind("click");
    $("#linkOperaciones").click(function(){
        cargarEspacioTrabajo("operaciones");

    });

    $("#linkOperacionesRetiro").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("retiroPuntos");
    });

    $("#linkOperacionesQuiniela").click(function(){
        redireccionar(quiniela);
    });

    $("#linkOperacionesApuesta").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("apuestas");
    });

    $("#linkOperacionesRecarga").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("recargaPuntos");
    });



    //TODO LINK DEL FOOTER

    //            $("#footerTerminoCondiciones").click(function(){
    //                cargarEspacioTrabajo("terminoCondiciones");
    //
    //            });
    $("#footerFaq").unbind("click");
    $("#footerFaq").click(function(){
        cargarEspacioTrabajo("faq");

    });

    $("#footerPoliticas").unbind("click");
    $("#footerPoliticas").click(function(){
        cargarEspacioTrabajo("politicas");

    });

    $("#footerContactanos").unbind("click");
    $("#footerContactanos").click(function(){
        blanquearFormularios();
        cargarEspacioTrabajo("contactanos");

    });

    //            $("#footerMapaSitio").click(function(){
    //                         cargarEspacioTrabajo("mapaSitio");
    //
    //                     });



    //TODO click a siguiente y anterior de reglas de juego

    $("#anteriorReglas1").unbind("click");
    $("#anteriorReglas1").click(function(){
        cargarEspacioTrabajo("ReglaJuego1");

    });

    $("#anteriorReglas2").unbind("click");
    $("#anteriorReglas2").click(function(){
        cargarEspacioTrabajo("ReglaJuego2");

    });



    $("#siguenteReglas2").unbind("click");
    $("#siguenteReglas2").click(function(){
        cargarEspacioTrabajo("ReglaJuego2");

    });

    $("#siguenteFaq").unbind("click");
    $("#siguenteFaq").click(function(){
        cargarEspacioTrabajo("faq");

    });

    $('.galleryImage').hover(
        function()
        {

            $(this).find('img').animate({width:100, marginTop:10, marginLeft:10}, 300);

        },
        function()
        {

            $(this).find('img').animate({width:200, marginTop:0, marginLeft:0},100);

        });


    $('.galleryImageLarga').hover(
        function()
        {

            $(this).find('img').animate({width:200, marginTop:10, marginLeft:10}, 300);

        },
        function()
        {

            $(this).find('img').animate({width:400, marginTop:0, marginLeft:0},100);

        });

}


function redireccionar(RUTA) {
    setTimeout("location.href='"+RUTA+"'", 10);
}


function puntosDisponibles(numero){
    if(parseInt(numero)<= parseInt($("#puntosDisponibles").html()))
        return true;
    else
        return false;
}

function  cargarEspacioTrabajo(espacio){
    $(".divEspacio").each(function(){
        this.className="divEspacio disNone";
    });
    $("#"+espacio).removeClass("disNone");
}


//Funci�n que crea las notificaciones
function notify(msg,speed,fadeSpeed,type){

    //Borra cualquier mensaje existente
    $('.notify').remove();

    //Si el temporizador para hacer desaparecer el mensaje est�
    //activo, lo desactivamos.
    if (typeof fade != "undefined"){
        clearTimeout(fade);
    }

    //Creamos la notificaci�n con la clase (type) y el texto (msg)
    $('body').append('<div class="notify '+type+'" style="display:none;position:fixed;left:10"><p>'+msg+'</p></div>');

    //Calculamos la altura de la notificaci�n.
    notifyHeight = $('.notify').outerHeight();

    //Creamos la animaci�n en la notificaci�n con la velocidad
    //que pasamos por el parametro speed
    $('.notify').css('top',-notifyHeight).animate({top:10,opacity:'toggle'},speed);

    //Creamos el temporizador para hacer desaparecer la notificaci�n
    //con el tiempo almacenado en el parametro fadeSpeed
    fade = setTimeout(function(){

        $('.notify').animate({top:notifyHeight+10,opacity:'toggle'}, speed);

    }, fadeSpeed);

}


//     notify('Probando notificaciones',500,3000);

//        notify('Debe ingresar al portal para poder continuar gracias.',500,5000,'error');

function cargarEfectoImagenApuesta(){
    $('.galleryImageApuesta').hover(
        function()
        {

            $(this).find('img').animate({width:50, marginTop:10, marginLeft:10}, 500);

        },
        function()
        {

            $(this).find('img').animate({width:100, marginTop:0, marginLeft:0},100);

        });

}

function recargarPuntosVista(monto){
    // ENCABEZADO
    $("#puntosDisponibles").html(monto);
    // para la pantalla de recarga
    $("#puntosDisponibleRecarga").html(monto);
    // para la pantalla de APUESTA
    $("#puntosDisponibleApuesta").html(monto);
    // para la pantalla de retiro
    $("#puntosDisponibleRetiro").html(monto);
}

function blanquearFormularios(){
    $(".inputFormulario").each(function(){
        this.value="";
    });

    $(".selectFormulario").each(function(){
        this.value="-1";
    });

    $(".spanFormulario").each(function(){
        $("#"+this.id).html("");
    });

}


function sendServiceJSONSync(uriRestService,JsonData,funcionOnSuccess,funcionOnRequest,funcionOnFailure){

    $.ajax({
        async:false,
        url: uriRestService,
        cache:false,
        method: "POST",
        data:(JsonData == undefined)?null:JsonData,
        dataType:"json",
        success: funcionOnSuccess
    });


}


function notifyNucleo(msg,speed,fadeSpeed,type){

    //Borra cualquier mensaje existente
    $('.notify').remove();

    //Si el temporizador para hacer desaparecer el mensaje est�
    //activo, lo desactivamos.
    if (typeof fade != "undefined"){
        clearTimeout(fade);
    }

    //Creamos la notificaci�n con la clase (type) y el texto (msg)
    $('body').append('<div class="notify '+type+'" style="display:none;position:fixed;left:10"><p>'+msg+'</p></div>');

    //Calculamos la altura de la notificaci�n.
    notifyHeight = $('.notify').outerHeight();

    //Creamos la animaci�n en la notificaci�n con la velocidad
    //que pasamos por el parametro speed
    $('.notify').css('top',-notifyHeight).animate({top:10,opacity:'toggle'},speed);

    //Creamos el temporizador para hacer desaparecer la notificaci�n
    //con el tiempo almacenado en el parametro fadeSpeed
    fade = setTimeout(function(){

        $('.notify').animate({top:notifyHeight+10,opacity:'toggle'}, speed);

    }, fadeSpeed);

}

function tablas(idDiv,idTable,tabla,contenidoTabla,funcionTd){


    var contenedor=$("#"+idDiv);
    contenedor.empty();
    var table= $(document.createElement('table')).appendTo(contenedor);
    table.attr("id",idTable);
    var thead= $(document.createElement('thead')).appendTo(table);
    var tr= $(document.createElement('tr')).appendTo(thead);

    $.each(tabla, function (q, item){
        var th= $(document.createElement('th')).appendTo(tr);
        th.html(item);
    })


    var tbody= $(document.createElement('tbody')).appendTo(table);

    $.each(contenidoTabla, function (q, item) {
        var tr=$(document.createElement('tr')).appendTo(tbody);
        for(var i=0;i<tabla.length;i++)
        {
            var td=$(document.createElement('td')).appendTo(tr);
            td.html(eval("item."+tabla[i].toLowerCase()+"$"+setnumero(i)));
            td.attr("id",tabla[i].toLowerCase()+i+q);
            if (funcionTd!=null){
                funcionTd(td);

            }
        }
    });

    function setnumero(valor){
        var n;
        valor=valor+1;
        n = valor;
       if(valor<10){
          n="0"+valor;
       }

        return n;
    }


    var oTable = $('#'+idTable).dataTable();


      return $('#'+idTable);

}


function togglesFormulario(idformulario){
    $("#"+idformulario+" .formularioInput").keyup(function(){

        if(validarFormulario($(this))){
            $(this).closest('li').find(" + li").removeClass("disable").addClass("enable");
        }else{
            $(this).closest('li').find(" ~ li.enable").removeClass("enable").addClass("disable");
        }

    });

}


function validarFormulario(formulario){


    if((formulario.attr("class").indexOf("cadena4")!=-1)&&(formulario.val().length>3)){
        return true;
    }else
    if((formulario.attr("class").indexOf("cadena2")!=-1)&&(formulario.val().length>1)){
        return true;
    }else
    if((formulario.attr("class").indexOf("numeric4")!=-1)&&(formulario.val().length>3)){
        return true;
    } else
    if((formulario.attr("class").indexOf("direccIP")!=-1)&&(isDirIP(formulario.val()))){
        return true;
    }






}

function startAjax() {

    $(".bubblingG").fadeIn("slow");

}

function stopAjax() {

    $(".bubblingG").fadeOut("slow");

}

function failedAjax() {

    $(".bubblingG").fadeOut("slow");
    notify('Error en consulta de Base de Datos.',500,5000,'error');

}

function loadingCompleted() {

}
